路由选择算法中都要用到求最短路径算法,比较经典的有Bellman-Ford算法和Dijskstra算法,它们的思路不同但得到的结果一样。
寻找源结点到其它各结点的最短路径,每次都能找到一个到源结点的最短路径。
令D(v)为源结点到结点v的距离,它是源结点沿某一条路径到v的所有链路之和。
令l(I,j)为结点i到j的距离。
算法步骤:
设源结点为1,则算法的具体步骤如下:
步骤 | A集合 | D(2) | D(3) | D(4) | D(5) | D(6) | B集合 |
---|---|---|---|---|---|---|---|
初始化 | {1} | 2,(1,2) | 5,(1,5) | 1,(1,4) | ∞ | ∞ | {2,3,4,5,6} |
1 | {1,4} | min{2,3}=2,路径(1,2) | min{5,4}=4,路径(1,4,3) | 1,1到4的最短路径为(1,4) | min{∞,2}=2,路径(1,4,5) | min{∞,∞}=∞ | {2,3,5,6} |
2 | {1,4,2} | 2,1到2的最短路径为(1,2) | min{4,5}=4,路径(1,4,3) | min{2,∞}=2,路径(1,4,5) | min{∞,∞}=∞ | {3,5,6} | |
3 | {1,4,2,5} | min{4,3}=3,路径(1,4,5,3) | 2,1到5的最短路径为(1,4,5) | min{∞,4}=4,路径(1,4,5,6) | {3,6} | ||
4 | {1,4,2,5,3} | 3,1到3的最短路径(1,4,5,3) | min{4,8}=4, 路径(1,4,5,6) | {6} | |||
5 | {1,4,2,5,3,6} | 4,1到6的最短路径(1,4,5,6) | 空 |